﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SushiWeb.Models;
using System.Collections;
using System.ServiceModel;

namespace SushiWeb.Controllers
{
    public class AtencionController : Controller
    {
        public ActionResult listarPedidosAtencion()
        {

            List<PedidoAtendido> listaAtencion = new List<PedidoAtendido>();

            AtencionPedidosWS.AtencionPedidosClient proxy = new AtencionPedidosWS.AtencionPedidosClient();

            AtencionPedidosWS.PedidoAtendido[] pedidoAtendido = proxy.ListarPedidosAtendidos();

            for (int i = 0; i < pedidoAtendido.Length ; i++)
            {
                PedidoAtendido pedido = new PedidoAtendido();
                pedido.idcliente = pedidoAtendido[i].idcliente;
                pedido.idpago = pedidoAtendido[i].idpago;
                pedido.idpedido = pedidoAtendido[i].idpedido;
                pedido.estado = pedidoAtendido[i].estado;
                pedido.nombreCliente = pedidoAtendido[i].nombreCliente;
                pedido.telefono = pedidoAtendido[i].telefono;
                pedido.direccion = pedidoAtendido[i].direccion;
                pedido.apellidos = pedidoAtendido[i].apellidos;
                pedido.apellidos = pedidoAtendido[i].apellidos;

                listaAtencion.Add(pedido);
            }

            List<Estado> estadoPedido = new List<Estado>();

            Estado estados1 = new Estado();

            estados1.codigo = 1;
            estados1.descripcion = "Pendiente";

            estadoPedido.Add(estados1);

            Estado estados2 = new Estado();

            estados2.codigo = 2;
            estados2.descripcion = "En envio";

            estadoPedido.Add(estados2);

            Estado estados3 = new Estado();

            estados3.codigo = 3;
            estados3.descripcion = "Recepcionado";

            estadoPedido.Add(estados3);

            ViewData["Estados"] = new SelectList(estadoPedido.ToList(), "codigo", "descripcion");

            return View(listaAtencion.ToList());
        }

        public class Estado
        {

            public int codigo { get; set; }
            public string descripcion { get; set; }
        }

        public ActionResult buscarPersonaPorId(int idPedido)
        {
            Session["idPedido"] = idPedido;

            List<Persona> listaPersona = new List<Persona>();

            AtencionPedidosWS.AtencionPedidosClient proxy = new AtencionPedidosWS.AtencionPedidosClient();

            AtencionPedidosWS.Persona[] personas = proxy.ObtenerPersona();

            for (int i = 0; i < personas.Length; i++)
            {
                Persona persona = new Persona();
                persona.IdPersona = personas[i].IdPersona;
                persona.Nombres = personas[i].Nombres;
                persona.Apellidos = personas[i].Apellidos;

                listaPersona.Add(persona);
            }

            TempData["Persons"] = listaPersona;

            return RedirectToAction("BuscarPersonaReparto");
        }

        public ActionResult BuscarPersonaReparto()
        {

            List< Persona > persons_ = TempData["Persons"] as List<Persona>;

            return View(persons_);
        }

        public ActionResult grabarEmpleado(int IdPersona)
        {

            string mensaje = "";
            string tipoMensaje = "";
            string idPedido = Session["idPedido"].ToString();
            int idPed = Convert.ToInt32(idPedido);

            AtencionPedidosWS.AtencionPedidosClient proxy = new AtencionPedidosWS.AtencionPedidosClient();

            try
            {
                string personas = proxy.asignarTrabajador(idPed, IdPersona);

                mensaje = "Se ha asignado al empleado satisfactoriamente";
                tipoMensaje = "INFO";

            }catch(FaultException<AtencionPedidosWS.AtencionExceptions> ex)
            {
                mensaje = ex.Message;
                tipoMensaje = "WARN";
            }

            return (Json(new { mensaje = mensaje, tipoMensaje = tipoMensaje, redirectTo = Url.Action("listarPedidosAtencion") }, JsonRequestBehavior.DenyGet));
            //return RedirectToAction("listarPedidosAtencion");
        }

        public ActionResult grabarEstado(int idPedido, string estado)
        {

            AtencionPedidosWS.AtencionPedidosClient proxy = new AtencionPedidosWS.AtencionPedidosClient();

            string personas = proxy.cambiarEstadoPedido(idPedido, estado);


            List<PedidoAtendido> listaAtencion = new List<PedidoAtendido>();

            AtencionPedidosWS.PedidoAtendido[] pedidoAtendido = proxy.ListarPedidosAtendidos();

            for (int i = 0; i < pedidoAtendido.Length ; i++)
            {
                PedidoAtendido pedido = new PedidoAtendido();
                pedido.idcliente = pedidoAtendido[i].idcliente;
                pedido.idpago = pedidoAtendido[i].idpago;
                pedido.idpedido = pedidoAtendido[i].idpedido;
                pedido.nombreCliente = pedidoAtendido[i].nombreCliente;
                pedido.telefono = pedidoAtendido[i].telefono;
                pedido.direccion = pedidoAtendido[i].direccion;
                pedido.apellidos = pedidoAtendido[i].apellidos;
                pedido.apellidos = pedidoAtendido[i].apellidos;

                listaAtencion.Add(pedido);
            }

            List<Estado> estadoPedido = new List<Estado>();

            Estado estados1 = new Estado();

            estados1.codigo = 1;
            estados1.descripcion = "Pendiente";

            estadoPedido.Add(estados1);

            Estado estados2 = new Estado();

            estados2.codigo = 2;
            estados2.descripcion = "En envio";

            estadoPedido.Add(estados2);

            Estado estados3 = new Estado();

            estados3.codigo = 3;
            estados3.descripcion = "Recepcionado";

            estadoPedido.Add(estados3);


            return Redirect("/Atencion/BuscarPersonaReparto");
        }

        public ActionResult detallePedido(int idPedido)
        {

            List<DetallePedido> listaDetallePedido = new List<DetallePedido>();

            AtencionPedidosWS.AtencionPedidosClient proxy = new AtencionPedidosWS.AtencionPedidosClient();

            AtencionPedidosWS.DetallePedido[] detallePedido = proxy.ObtenerDetalle(idPedido);

            for (int i = 0; i < detallePedido.Length; i++)
            {
                DetallePedido detallepedido = new DetallePedido();
                detallepedido.IdDetallePedido = detallePedido[i].IdDetallePedido;
                detallepedido.IdProducto = detallePedido[i].IdProducto;
                detallepedido.Cant = detallePedido[i].Cant;
                detallepedido.Monto = detallePedido[i].Monto;

                listaDetallePedido.Add(detallepedido);
            }
        
            return View();
        }
    }
}

